@function selectorToString($selector) {
    $selector: quote($selector);
    $selector: str-slice($selector, 2, -2);
    @return $selector;
}

@function containsModifier($selector) {
    $selector: selectorToString($selector);

    @if str-index($selector, $modifier-separator) {
        @return true;
    }

    @else {
        @return false;
    }
}

@function containWhenFlag($selector) {
    $selector: selectorToString($selector);
  
    @if str-index($selector, '.' + $state-prefix) {
      @return true
    } @else {
      @return false
    }
  }
  
  @function containPseudoClass($selector) {
    $selector: selectorToString($selector);
  
    @if str-index($selector, ':') {
      @return true
    } @else {
      @return false
    }
  }
  
  @function hitAllSpecialNestRule($selector) {
  
    @return containsModifier($selector) or containWhenFlag($selector) or containPseudoClass($selector);
  }
  